home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene Storm
/
Scene Storm - Volume 1.iso
/
coding
/
asm
/
games
/
texturemapping
/
sincos.asm
< prev
next >
Wrap
Assembly Source File
|
1980-01-03
|
5KB
|
401 lines
; $$TABS=8
include "demo.i"
sin::
; input d0=angle output d0=sin(d0)
; trashes d1/d2,a0
clr d2
move.b d0,d2
lsr #8,d0
add d0,d0
lea sin_table(pc),a0
move 2(a0,d0.w),d1
move 0(a0,d0.w),d0
sub d0,d1
muls d2,d1
asr.l #8,d1
add d1,d0
rts
cos::
; input d0=angle output d0=cos(d0)
; trashes d1/d2,a0
clr d2
move.b d0,d2
lsr #8,d0
add d0,d0
lea sin_table(pc),a0
move 2(a0,d0.w),d1
move 0(a0,d0.w),d0
sub d0,d1
muls d2,d1
asr.l #8,d1
add d1,d0
rts
sincos::
; input d0=angle -32768 to 32767
; output d0=sin d1=cosine
; uses interpolation
; trashes d0,a0,d1,d2,d3
move d0,d2
and #$ff,d2
lsr #8,d0
add d0,d0
lea cos_table(pc),a0
move 0(a0,d0.w),d1
move 2(a0,d0.w),d3
sub d1,d3
muls d2,d3
asr.l #8,d3
add d3,d1
lea sin_table(pc),a0
move 2(a0,d0.w),d3
move 0(a0,d0.w),d0
sub d0,d3
muls d2,d3
asr.l #8,d3
add d3,d0
rts
fast_sincos::
; input d0=angle -32768 to 32767
; output d0=sin d1=cosine
; no interpolation
; trashes d0,a0,d1
lsr #8,d0
add d0,d0
lea cos_table(pc),a0
move 0(a0,d0.w),d1
lea sin_table(pc),a0
move 0(a0,d0.w),d0
rts
sin_table dc.w 0
dc.w 804
dc.w 1608
dc.w 2411
dc.w 3212
dc.w 4011
dc.w 4808
dc.w 5602
dc.w 6393
dc.w 7180
dc.w 7962
dc.w 8740
dc.w 9512
dc.w 10279
dc.w 11039
dc.w 11793
dc.w 12540
dc.w 13279
dc.w 14010
dc.w 14733
dc.w 15447
dc.w 16151
dc.w 16846
dc.w 17531
dc.w 18205
dc.w 18868
dc.w 19520
dc.w 20160
dc.w 20788
dc.w 21403
dc.w 22006
dc.w 22595
dc.w 23170
dc.w 23732
dc.w 24279
dc.w 24812
dc.w 25330
dc.w 25833
dc.w 26320
dc.w 26791
dc.w 27246
dc.w 27684
dc.w 28106
dc.w 28511
dc.w 28899
dc.w 29269
dc.w 29622
dc.w 29957
dc.w 30274
dc.w 30572
dc.w 30853
dc.w 31114
dc.w 31357
dc.w 31581
dc.w 31786
dc.w 31972
dc.w 32138
dc.w 32286
dc.w 32413
dc.w 32522
dc.w 32610
dc.w 32679
dc.w 32729
dc.w 32758
cos_table dc.w 32767
dc.w 32758
dc.w 32729
dc.w 32679
dc.w 32610
dc.w 32522
dc.w 32413
dc.w 32286
dc.w 32138
dc.w 31972
dc.w 31786
dc.w 31581
dc.w 31357
dc.w 31114
dc.w 30853
dc.w 30572
dc.w 30274
dc.w 29957
dc.w 29622
dc.w 29269
dc.w 28899
dc.w 28511
dc.w 28106
dc.w 27684
dc.w 27246
dc.w 26791
dc.w 26320
dc.w 25833
dc.w 25330
dc.w 24812
dc.w 24279
dc.w 23732
dc.w 23170
dc.w 22595
dc.w 22006
dc.w 21403
dc.w 20788
dc.w 20160
dc.w 19520
dc.w 18868
dc.w 18205
dc.w 17531
dc.w 16846
dc.w 16151
dc.w 15447
dc.w 14733
dc.w 14010
dc.w 13279
dc.w 12540
dc.w 11793
dc.w 11039
dc.w 10279
dc.w 9512
dc.w 8740
dc.w 7962
dc.w 7180
dc.w 6393
dc.w 5602
dc.w 4808
dc.w 4011
dc.w 3212
dc.w 2411
dc.w 1608
dc.w 804
dc.w 0
dc.w -804
dc.w -1608
dc.w -2411
dc.w -3212
dc.w -4011
dc.w -4808
dc.w -5602
dc.w -6393
dc.w -7180
dc.w -7962
dc.w -8740
dc.w -9512
dc.w -10279
dc.w -11039
dc.w -11793
dc.w -12540
dc.w -13279
dc.w -14010
dc.w -14733
dc.w -15447
dc.w -16151
dc.w -16846
dc.w -17531
dc.w -18205
dc.w -18868
dc.w -19520
dc.w -20160
dc.w -20788
dc.w -21403
dc.w -22006
dc.w -22595
dc.w -23170
dc.w -23732
dc.w -24279
dc.w -24812
dc.w -25330
dc.w -25833
dc.w -26320
dc.w -26791
dc.w -27246
dc.w -27684
dc.w -28106
dc.w -28511
dc.w -28899
dc.w -29269
dc.w -29622
dc.w -29957
dc.w -30274
dc.w -30572
dc.w -30853
dc.w -31114
dc.w -31357
dc.w -31581
dc.w -31786
dc.w -31972
dc.w -32138
dc.w -32286
dc.w -32413
dc.w -32522
dc.w -32610
dc.w -32679
dc.w -32729
dc.w -32758
dc.w -32767
dc.w -32758
dc.w -32729
dc.w -32679
dc.w -32610
dc.w -32522
dc.w -32413
dc.w -32286
dc.w -32138
dc.w -31972
dc.w -31786
dc.w -31581
dc.w -31357
dc.w -31114
dc.w -30853
dc.w -30572
dc.w -30274
dc.w -29957
dc.w -29622
dc.w -29269
dc.w -28899
dc.w -28511
dc.w -28106
dc.w -27684
dc.w -27246
dc.w -26791
dc.w -26320
dc.w -25833
dc.w -25330
dc.w -24812
dc.w -24279
dc.w -23732
dc.w -23170
dc.w -22595
dc.w -22006
dc.w -21403
dc.w -20788
dc.w -20160
dc.w -19520
dc.w -18868
dc.w -18205
dc.w -17531
dc.w -16846
dc.w -16151
dc.w -15447
dc.w -14733
dc.w -14010
dc.w -13279
dc.w -12540
dc.w -11793
dc.w -11039
dc.w -10279
dc.w -9512
dc.w -8740
dc.w -7962
dc.w -7180
dc.w -6393
dc.w -5602
dc.w -4808
dc.w -4011
dc.w -3212
dc.w -2411
dc.w -1608
dc.w -804
dc.w 0
dc.w 804
dc.w 1608
dc.w 2411
dc.w 3212
dc.w 4011
dc.w 4808
dc.w 5602
dc.w 6393
dc.w 7180
dc.w 7962
dc.w 8740
dc.w 9512
dc.w 10279
dc.w 11039
dc.w 11793
dc.w 12540
dc.w 13279
dc.w 14010
dc.w 14733
dc.w 15447
dc.w 16151
dc.w 16846
dc.w 17531
dc.w 18205
dc.w 18868
dc.w 19520
dc.w 20160
dc.w 20788
dc.w 21403
dc.w 22006
dc.w 22595
dc.w 23170
dc.w 23732
dc.w 24279
dc.w 24812
dc.w 25330
dc.w 25833
dc.w 26320
dc.w 26791
dc.w 27246
dc.w 27684
dc.w 28106
dc.w 28511
dc.w 28899
dc.w 29269
dc.w 29622
dc.w 29957
dc.w 30274
dc.w 30572
dc.w 30853
dc.w 31114
dc.w 31357
dc.w 31581
dc.w 31786
dc.w 31972
dc.w 32138
dc.w 32286
dc.w 32413
dc.w 32522
dc.w 32610
dc.w 32679
dc.w 32729
dc.w 32758
dc.w 32767
dc.w 32767